#1 无返回值，无参数的函数

def func():
    print("no return, no parameters Function")

func()

#2 有参数， 无返回值的函数
def func2(L):
    print(L)

L = ['a', 'b', 'c']
func2(L)

#3 有参数，有返回值的函数
def func2(year):
    age = 2018 - year
    return age
#y = int(input("please input a year:"))
y = 1999
print(func2(y))

# 有多个参数的函数, 参数可以有默认值
def func3(a, b, c=0):
    print(a, b, c)

func3(a=1, c=3, b = 2) # 当指定参数赋值时，顺序可以不按函数定义的顺序

# 函数可以接收任意长度的参数，在函数内部当作元组处理
def func4(*args):
    print(args[2])

func4("a", "b", "c", "d")

# **args 把参数处理为一个字典
def func5(**args):
    print(args)

func5(a=1, b=2, c=3)

# 变量的作用域
X = 99
def func6():
    X = 88 # 局部变量，函数调用结束后就消失了

func6()
print(X)

# 全局变量的定义
Y = 100
def func7():
    global Y
    Y = 200

func7()
print(Y)

a = 1
b = 2
def func8(x, y):
    global t
    t = x + y

func8(a, b)
print(t)

f = lambda x,y,z: x + y + z
def f(x, y , z):
    return x + y + z
print("lambda的输出结果%d" % f(10, 20, 30))

f1 = lambda a = "I", b = " love", c = " python": a + b + c
print(f1("We"))
